LOOP = /dev/loop13
mnt = ../mnt

.PHONY: $(BUILD)/master.img
$(BUILD)/master.img: \
	$(BUILD)/kernel.raw.bin \
	$(BUILD)/kernel.map \
	$(BUILD)/boot/boot.bin \
	$(BUILD)/boot/loader.bin \
	$(BUILD)/boot/vm86.bin \
	$(BUILTIN_APPS) \

# 创建一个 128 MB 的虚拟磁盘
	yes | bximage -q -hd=128 -func=create -sectsize=512 -imgmode=flat $@

# 写入 bootloader 和 kernel
	dd if=$(BUILD)/boot/boot.bin of=$@ bs=512 count=1 conv=notrunc
	dd if=$(BUILD)/boot/loader.bin of=$@ seek=2 bs=512 count=4 conv=notrunc
	dd if=$(BUILD)/kernel.raw.bin of=$@ seek=10 bs=512 count=1000 conv=notrunc

# 给硬盘进行分区
	sfdisk $@ < utils/master.sfdisk

# 挂载设备
	sudo losetup $(LOOP) --partscan $@

# 创建 EXT2 文件系统
	sudo mkfs.ext2 $(LOOP)p1

# 创建 minix(第一版) 文件系统
	sudo mkfs.minix -1 -n 14 $(LOOP)p2

# 挂载文件系统
	sudo mount $(LOOP)p1 $(mnt)

# 获得权限
	sudo chown ${USER} $(mnt)

# 构建根文件系统
	mkdir -p $(mnt)/mnt
	mkdir -p $(mnt)/home
	mkdir -p $(mnt)/sys
	mkdir -p $(mnt)/usr
	mkdir -p $(mnt)/dev

	mkdir -p $(mnt)/usr/bin
	mkdir -p $(mnt)/usr/lib

	cp $(BUILTIN_APPS) $(mnt)/usr/bin/
	cp $(BUILD)/boot/vm86.bin $(mnt)/usr/bin/

	cp $(SRC)/utils/bin/* $(mnt)/usr/bin/
	cp $(SRC)/utils/lib/* $(mnt)/usr/lib/

	ln -s usr/bin $(mnt)/bin
	ln -s usr/lib $(mnt)/lib

	cp -r $(SRC)/include $(mnt)/usr/include
	cp -r $(SRC)/utils/fonts $(mnt)/usr/fonts

# 取消挂载文件系统
	sudo umount $(mnt)

# 挂载文件系统
	sudo mount $(LOOP)p2 $(mnt)

# 获得权限
	sudo chown ${USER} $(mnt)

# 构建根文件系统
	touch $(mnt)/file

# 取消挂载文件系统
	sudo umount $(mnt)

# 取消挂载设备
	sudo losetup -d $(LOOP)

.PHONY: umount
umount:
	-sudo umount $(mnt)
	sudo losetup -d $(LOOP)

.PHONY: mount0
mount0:
	sudo losetup $(LOOP) --partscan $(BUILD)/master.img
	sudo mount $(LOOP)p1 $(mnt)
	sudo chown ${USER} $(mnt)

.PHONY: mount1
mount1:
	sudo losetup $(LOOP) --partscan $(BUILD)/slaw.img
	sudo mount $(LOOP)p2 $(mnt)
	sudo chown ${USER} $(mnt)
